The invention relates to an interface between an applications program and a robotics workstation.
Traditional industrial automation programs are developed to perform some manufacturing process in an industrial automation workstation. The workstation typically will have several kinds of objects in the workspace, e.g. tools, parts, feeders. The workstation will have some form of motion devices to move objects from one location to another, or perform some task on an object with some tool. The motion devices may be simple linear motion slides or rotary tables, or may be some combination of slides and rotary devices to form what is typically called a robotic manipulator, or arm, or simply a robot.
The first industrial programs commanded these motion devices in raw motion sensor units. These types of programs were very specific to the arrangement and location of objects in the workspace. If the location of objects changed in the workspace or if different motion devices were used (e.g. hardware upgrades or redesigns), the application programs would have to be modified to account for these changes. These programs required constant modification over the applications lifetime. These types of programs were expensive to maintain.
The next generation of industrial automation programs commanded motion devices in engineering units and specified the location of objects in the workspace in engineering units also. Developments in robotics research in the late 1960's and throughout the 1970's, lead to methods of solving the kinematic equations of robots. This allowed the motion commands to robots to be expressed in engineering units while the kinematic equations solved for the raw motion device commands to achieve that "world space" command. These world space commands allowed some hardware upgrades and redesigns without having to modify the application programs. Application programs still had to know the relation of objects in the workspace, and determined what motion device to use to achieve some task.
The third generation of industrial programs allowed location of objects in the workspace to be expressed relative to some other object. These application programs for robots were often written in a robotic programming language such as VAL(tm), RAIL (tm), AML (tm), and Karal (tm). These languages provide support for expression of location relative to another location, typically called "reference frames".
Reference frames provide a level of application program independence from total details of the location of objects in the workstation. An example is if 5 locations are referenced off of one common location, then changing the one common location will automatically adjust the world location of the other 5 locations. Applications written in these third generation systems still had to have explicit knowledge of what location is relative to what other location. If the relationship of one location to another is changed, the application needed to be modified. In addition, application programs still had to know what motion device to use to perform a task. These limitations hampered the reuse of application programs to other tasks, or to rearrangements of objects within the workspace.